package com.weblog.article.dao;

import com.weblog.model.article.Tag;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.NoRepositoryBean;

import java.util.List;

/**
 * tag数据访问接口
 * @author Administrator
 *
 */
public interface TagDao extends JpaRepository<Tag,String>, JpaSpecificationExecutor<Tag> {

    /**
     * 根据标签名查询标签
     * @param tagname
     * @return
     */
    Tag findTagByTagnameIgnoreCase(String tagname);

    /**
     * 查询前三个
     * @param state
     * @param pageable
     * @return
     */
    Page<Tag>findTagsByState(String state, Pageable pageable);

    @Query(value = "update tb_tag set state=?1 where id =?2",nativeQuery = true)
    void updateStateById(String state, String id);


    /**
     * 根据id修改使用次数
     * @param id
     */
    @Query(value = "update tb_tag set times =times+1 where id=?1",nativeQuery = true)
    @Modifying
    void updateTimesById(String id);


    /**
     * 查询使用次数最多的前15个
     * @param state
     * @return
     */
    List<Tag> findTop15ByStateOrderByTimesDesc(String state);
}
